package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.annotation.UserContext;
import com.ruoyi.system.domain.TbProductCategory;
import com.ruoyi.system.domain.vo.UserData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TbProductMapper;
import com.ruoyi.system.domain.TbProduct;
import com.ruoyi.system.service.ITbProductService;

/**
 * 商品信息 ：与店铺关联Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-09-09
 */
@Service
public class TbProductServiceImpl implements ITbProductService 
{
    @Autowired
    private TbProductMapper tbProductMapper;

    /**
     * 查询商品信息 ：与店铺关联
     * 
     * @param productId 商品信息 ：与店铺关联主键
     * @return 商品信息 ：与店铺关联
     */
    @Override
    public TbProduct selectTbProductByProductId(Long productId)
    {
        return tbProductMapper.selectTbProductByProductId(productId);
    }

    /**
     * 查询商品信息 ：与店铺关联列表
     * 
     * @param tbProduct 商品信息 ：与店铺关联
     * @return 商品信息 ：与店铺关联
     */
    @Override
    public List<TbProduct> selectTbProductList(TbProduct tbProduct)
    {
//        System.out.println("userId : " + SecurityUtils.getUserId());
//        System.out.println("merchatid : " + SecurityUtils.getMerchantId());
//        System.out.println("username : " + SecurityUtils.getUsername());
        UserData userData = UserContext.getUserData();
        tbProduct.setMerchantId((long)userData.getMerchantId());
        tbProduct.setStoreId((long)userData.getStoreId());
//        System.out.println(tbProduct.getMerchantId() + " :------------------------------55");
//        System.out.println(tbProduct.getStoreId() + " :------------------------------56");
//        System.out.println(tbProduct);
        try {
            return tbProductMapper.selectTbProductList(tbProduct);
        }finally {
            UserContext.clear();
        }
    }

    /**
     * 新增商品信息 ：与店铺关联
     * 
     * @param tbProduct 商品信息 ：与店铺关联
     * @return 结果
     */
    @Override
    public int insertTbProduct(TbProduct tbProduct)
    {
        UserData userData = UserContext.getUserData();
        tbProduct.setMerchantId((long)userData.getMerchantId());
        tbProduct.setStoreId((long)userData.getStoreId());
        tbProduct.setTableName("tb_product");
//        System.out.println(tbProduct + " 74-----------------------------------------");
        try {
            return tbProductMapper.insertTbProduct(tbProduct);
        }finally {
            UserContext.clear();
        }
    }

    /**
     * 修改商品信息 ：与店铺关联
     * 
     * @param tbProduct 商品信息 ：与店铺关联
     * @return 结果
     */
    @Override
    public int updateTbProduct(TbProduct tbProduct)
    {
        return tbProductMapper.updateTbProduct(tbProduct);
    }

    /**
     * 批量删除商品信息 ：与店铺关联
     * 
     * @param productIds 需要删除的商品信息 ：与店铺关联主键
     * @return 结果
     */
    @Override
    public int deleteTbProductByProductIds(Long[] productIds)
    {
        return tbProductMapper.deleteTbProductByProductIds(productIds);
    }

    /**
     * 删除商品信息 ：与店铺关联信息
     * 
     * @param productId 商品信息 ：与店铺关联主键
     * @return 结果
     */
    @Override
    public int deleteTbProductByProductId(Long productId)
    {
        return tbProductMapper.deleteTbProductByProductId(productId);
    }

    @Override
    public List<TbProductCategory> selectTbProductCategoryList() {
        return tbProductMapper.selectTbProductCategory();
    }

    @Override
    public int insertTbProductInventory(TbProduct tbProduct) {

        return tbProductMapper.insertTbProductInventory(tbProduct);
    }

    @Override
    public int deleteTbProductInventoryByPidAndSid(Long[] productIds, Long storeId) {
        return tbProductMapper.deleteTbProductInventoryByPidAndSid(productIds,storeId);
    }
}
